---@class uart
---https://nodemcu.readthedocs.io/en/release/modules/uart/
uart = {
    --- 无校验位
    PARITY_NONE = "PARITY_NONE",
    --- 奇校验
    PARITY_ODD = "PARITY_ODD",
    --- 偶校验
    PARITY_EVEN = "PARITY_EVEN",
    --- 1个停止位
    STOPBITS_1 = "STOPBITS_1",
    --- 1.5个停止位
    STOPBITS_1_5 = "STOPBITS_1_5",
    --- 2个停止位
    STOPBITS_2 = "STOPBITS_2",
    DIR_RX = "DIR_RX",
    DIR_TX = "DIR_TX"
}

---更改UART引脚分配
---@param on number @0-标准引脚，1-GPIO13、GPIO15
---@return nil
function uart.alt(on)
end

---设置回调函数来处理UART事件。目前只支持“data”事件。
---由于ESP8266的限制，只有UART 0能够接收数据。
---@param event string @只能传入“data”，表示UART上已收到数据
---@param bufferLen number @如果n=0，将接收buffer中的每个字符;如果n<255，则当收到n个字符时调用回调;如果为一个字符"c"，当遇到"c"或Max n=255收到时将调用回调函数
---@param callback fun(data):void @0-标准引脚，1-GPIO13、GPIO15
---@param run_input number @0 or 1. 如果是0,UART的输入将不会进入Lua解释器，这可以接受二进制数据。如果1,UART的输入被视为文本流，DEL、BS、CR和LF字符被正常处理。完成的行将被传递给Lua解释器执行。注意解释器只处理完整的行。5
---@return nil
function uart.on(event, bufferLen, callback, run_input)
end

---(重新)配置UART的通信参数。
---@param id number @串口id，0或1
---@param baud number @波特率，支持300, 600, 1200, 2400, 4800, 9600, 19200, 31250, 38400, 57600, 74880, 115200, 230400, 256000, 460800, 921600, 1843200, 3686400
---@param databits number @数据位，5、6、7、8
---@param parity  uart.PARITY_NONE|uart.PARITY_ODD|uart.PARITY_EVEN @校验位
---@param stopbits uart.STOPBITS_1|uart.STOPBITS_1_5|uart.STOPBITS_2 @停止位
---@param echo number @如果0，禁用echo，否则启用echo(如果省略则默认)
---@return nil
function uart.setup(id, baud, databits, parity, stopbits, echo)
end

---返回UART的当前配置参数。
---@param id number @串口id，0或1
---@return string,string,string,string @波特率，数据位，校验位，停止位
function uart.getconfig(id)
end

---将字符串或字节写入UART。
---@param id number @串口id，0或1
---@param data string|byte @写入的数据
---@return nil
function uart.write(id, data)
end

---报告与UART关联的TX或RX硬件队列的深度(以字节为单位)。
---@param id number @串口id，0或1
---@param dir uart.DIR_RX|uart.DIR_TX @方向
---@return nil
function uart.fifodepth(id, dir)
end
